#ifndef SERVEUR_H
#define SERVEUR_H

#include <QtGui>
#include <QtNetwork>
#include <QIcon>

#include "SessionClientSurServeur.h"
#include "Proto.h"
#include "MaSocketServeur.h"

class SessionClientSurServeur;

class Serveur : public QObject
{
    Q_OBJECT

public:
    Serveur(QObject* parent = 0);
    ~Serveur();
    void lancerServeur(int port = 50885, QString pass = "");
    void arreterServeur();
    QString demandeConnexion(const QString & ip, const QString & pseudo, const QString & pass);
    QString demandeConnexion(const QString & ip, const QString & pseudo);
    void deconnexionClient(SessionClientSurServeur * client);
    bool isConnecte();
    QString errorConnecte();
    void envoyerMessageATous(const QString &message, const QString &couleur);

private:
    int port;
    bool connecte;
    QString pass;
    //MaFenetreServeur *IHM;
    QTcpServer *socketServeur;
    QList<SessionClientSurServeur *> clients;

public slots:
    void kickerClient(QString nom);

private slots:
    void nouvelleConnexion();
    void envoyerATous(QString message);

signals:
    void nouveauClient(QString,QString);
    void enleverClient(QString);
    void logServeur(QString);
};

#endif // SERVEUR_H
